#include "cabecalho.h"

/* Abre o arquivo de entrada e realiza a leitura, ou seja, envia para a memória.*/

int Ler_Arquivo(char* nome_arquivo) {

	FILE *arquivo_entrada;
	
	int i = 0;
	int j = 0;

	arquivo_entrada = fopen (nome_arquivo, "r");

	// Tratamento de erro quanto ao arquivo
	if (arquivo_entrada == NULL) {
		/* Melhorar o tratamento */
		printf("ERRO: Problema na leitura do arquivo de entrada. \n");
		return (-1);
	}

	fscanf (arquivo_entrada,"%d %d", &Quant_planos, &Quant_planetas);

	// Tratamento de erro quanto a quantidade de planos e planetas
	if (((Quant_planos < 1) || (Quant_planos > 500)) || ((Quant_planetas < 1) || (Quant_planetas > 10000))) {
		/* Melhorar o tratamento */
		printf("ERRO: A quantidade de planos ou de planetas excede os limites desejados.\n");
		return (-1);
	}

	Plano = Alocar_Matriz(Quant_planos, 4);
	Planeta = Alocar_Matriz(Quant_planetas, 3);

	if ((Plano == NULL) || (Planeta == NULL)) {
		return (-1);
	}

	while(!feof(arquivo_entrada)) {

		/* Lê do arquivo de entrada e envia para as posições da matriz correspondente*/

		/* PLANOS */
		for (i = 0; i < Quant_planos; i++) {
			fscanf (arquivo_entrada,"%d %d %d %d", &Plano[i][0], &Plano[i][1], &Plano[i][2], &Plano[i][3]);
			if (((Plano[i][0] < -10000) || (Plano[i][0] > 10000)) ||
				((Plano[i][1] < -10000) || (Plano[i][1] > 10000)) ||
				((Plano[i][2] < -10000) || (Plano[i][2] > 10000)) ||
				((Plano[i][3] < -10000) || (Plano[i][3] > 10000)))
			{
				printf("ERRO: As coordenadas do plano %d excedem os limites estabelecidos. \n", i);

			}
		}

		/* PLANETAS */
		for (j = 0; j < Quant_planetas; ++j) {
			fscanf (arquivo_entrada,"%d %d %d", &Planeta[j][0], &Planeta[j][1], &Planeta[j][2]);
			if (((Planeta[j][0] < -10000) || (Planeta[j][0] > 10000)) ||
				((Planeta[j][1] < -10000) || (Planeta[j][1] > 10000)) ||
				((Planeta[j][2] < -10000) || (Planeta[j][2] > 10000))) 
			{
				printf("ERRO: As coordenadas do planeta %d excedem os limites estabelecidos. \n", j);
		}
	}

	fclose (arquivo_entrada);
	// --> Colocar um return indicando a eficácia da função;
	
}
return (0);
}


/*void Escrever_Arquivo () {
	
}*/

